home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 2 / The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO / bbs / mfm_111b.zip / SORT.PAS < prev    next >
Pascal/Delphi Source File  |  1992-01-07  |  9KB  |  182 lines

  1. {========================================================================}
  2. Procedure SortList;
  3.   Var
  4.     TempSort : ListPtr;
  5.     SortNext, SortPrev, Exchange : Boolean;
  6.   Begin
  7.     If (BeginSort <> NIL) And (EndSort <> NIL) And (BeginSort <> EndSort) Then
  8.     Begin
  9.       SortNext := False; SortPrev := False; Altered := True;
  10.       If MaxAvail > SizeOf(ListRecord) Then
  11.       Begin
  12.         New(TempSort);
  13.         NextPrintEntry := BeginSort;
  14.         While (NextPrintEntry <> EndSort) And (NextPrintEntry <> NIL) Do
  15.         Begin
  16.           NextPrintEntry := NextPrintEntry^.NextEntry;
  17.           If NextPrintEntry = EndSort Then SortNext := True;
  18.         End;
  19.         NextPrintEntry := BeginSort;
  20.         While (NextPrintEntry <> EndSort) And (NextPrintEntry <> NIL) Do
  21.         Begin
  22.           NextPrintEntry := NextPrintEntry^.PrevEntry;
  23.           If NextPrintEntry = EndSort Then SortPrev := True;
  24.         End;
  25.         If SortNext Then
  26.         Begin
  27.           Repeat
  28.             Exchange := False;
  29.             NextPrintEntry := BeginSort;
  30.             While NextPrintEntry <> EndSort Do
  31.             Begin
  32.               If NextPrintEntry^.FileName > NextPrintEntry^.NextEntry^.FileName Then
  33.               Begin
  34.                 TempSort^.TypeOfRecord := NextPrintEntry^.TypeOfRecord;
  35.                 TempSort^.FileName := NextPrintEntry^.FileName;
  36.                 TempSort^.FileSize := NextPrintEntry^.FileSize;
  37.                 TempSort^.FileDate := NextPrintEntry^.FileDate;
  38.                 TempSort^.Description := NextPrintEntry^.Description;
  39.                 NextPrintEntry^.TypeOfRecord := NextPrintEntry^.NextEntry^.TypeOfRecord;
  40.                 NextPrintEntry^.FileName := NextPrintEntry^.NextEntry^.FileName;
  41.                 NextPrintEntry^.FileSize := NextPrintEntry^.NextEntry^.FileSize;
  42.                 NextPrintEntry^.FileDate := NextPrintEntry^.NextEntry^.FileDate;
  43.                 NextPrintEntry^.Description := NextPrintEntry^.NextEntry^.Description;
  44.                 NextPrintEntry^.NextEntry^.TypeOfRecord := TempSort^.TypeOfRecord;
  45.                 NextPrintEntry^.NextEntry^.FileName := TempSort^.FileName;
  46.                 NextPrintEntry^.NextEntry^.FileSize := TempSort^.FileSize;
  47.                 NextPrintEntry^.NextEntry^.FileDate := TempSort^.FileDate;
  48.                 NextPrintEntry^.NextEntry^.Description := TempSort^.Description;
  49.                 Exchange := True;
  50.               End;
  51.               NextPrintEntry := NextPrintEntry^.NextEntry;
  52.             End;
  53.           Until (Not Exchange);
  54.           DisplayScreen;
  55.         End;
  56.         If SortPrev Then
  57.         Begin
  58.           Repeat
  59.             Exchange := False;
  60.             NextPrintEntry := BeginSort;
  61.             While NextPrintEntry <> EndSort Do
  62.             Begin
  63.               If NextPrintEntry^.FileName > NextPrintEntry^.PrevEntry^.FileName Then
  64.               Begin
  65.                 TempSort^.TypeOfRecord := NextPrintEntry^.TypeOfRecord;
  66.                 TempSort^.FileName := NextPrintEntry^.FileName;
  67.                 TempSort^.FileSize := NextPrintEntry^.FileSize;
  68.                 TempSort^.FileDate := NextPrintEntry^.FileDate;
  69.                 TempSort^.Description := NextPrintEntry^.Description;
  70.                 NextPrintEntry^.TypeOfRecord := NextPrintEntry^.PrevEntry^.TypeOfRecord;
  71.                 NextPrintEntry^.FileName := NextPrintEntry^.PrevEntry^.FileName;
  72.                 NextPrintEntry^.FileSize := NextPrintEntry^.PrevEntry^.FileSize;
  73.                 NextPrintEntry^.FileDate := NextPrintEntry^.PrevEntry^.FileDate;
  74.                 NextPrintEntry^.Description := NextPrintEntry^.PrevEntry^.Description;
  75.                 NextPrintEntry^.PrevEntry^.TypeOfRecord := TempSort^.TypeOfRecord;
  76.                 NextPrintEntry^.PrevEntry^.FileName := TempSort^.FileName;
  77.                 NextPrintEntry^.PrevEntry^.FileSize := TempSort^.FileSize;
  78.                 NextPrintEntry^.PrevEntry^.FileDate := TempSort^.FileDate;
  79.                 NextPrintEntry^.PrevEntry^.Description := TempSort^.Description;
  80.                 Exchange := True;
  81.               End;
  82.               NextPrintEntry := NextPrintEntry^.PrevEntry;
  83.             End;
  84.           Until (Not Exchange);
  85.           DisplayScreen;
  86.         End;
  87.         Dispose(TempSort);
  88.       End;
  89.     End;
  90.   End;
  91. {========================================================================}
  92. Procedure SortListTime;
  93.   Var
  94.     TempSort : ListPtr;
  95.     SortNext, SortPrev, Exchange : Boolean;
  96.   Begin
  97.     If (BeginSort <> NIL) And (EndSort <> NIL) And (BeginSort <> EndSort) Then
  98.     Begin
  99.       SortNext := False; SortPrev := False; Altered := True;
  100.       If MaxAvail > SizeOf(ListRecord) Then
  101.       Begin
  102.         New(TempSort);
  103.         NextPrintEntry := BeginSort;
  104.         While (NextPrintEntry <> EndSort) And (NextPrintEntry <> NIL) Do
  105.         Begin
  106.           NextPrintEntry := NextPrintEntry^.NextEntry;
  107.           If NextPrintEntry = EndSort Then SortNext := True;
  108.         End;
  109.         NextPrintEntry := BeginSort;
  110.         While (NextPrintEntry <> EndSort) And (NextPrintEntry <> NIL) Do
  111.         Begin
  112.           NextPrintEntry := NextPrintEntry^.PrevEntry;
  113.           If NextPrintEntry = EndSort Then SortPrev := True;
  114.         End;
  115.         If SortNext Then
  116.         Begin
  117.           Repeat
  118.             Exchange := False;
  119.             NextPrintEntry := BeginSort;
  120.             While NextPrintEntry <> EndSort Do
  121.             Begin
  122.               If NextPrintEntry^.FileDate > NextPrintEntry^.NextEntry^.FileDate Then
  123.               Begin
  124.                 TempSort^.TypeOfRecord := NextPrintEntry^.TypeOfRecord;
  125.                 TempSort^.FileName := NextPrintEntry^.FileName;
  126.                 TempSort^.FileSize := NextPrintEntry^.FileSize;
  127.                 TempSort^.FileDate := NextPrintEntry^.FileDate;
  128.                 TempSort^.Description := NextPrintEntry^.Description;
  129.                 NextPrintEntry^.TypeOfRecord := NextPrintEntry^.NextEntry^.TypeOfRecord;
  130.                 NextPrintEntry^.FileName := NextPrintEntry^.NextEntry^.FileName;
  131.                 NextPrintEntry^.FileSize := NextPrintEntry^.NextEntry^.FileSize;
  132.                 NextPrintEntry^.FileDate := NextPrintEntry^.NextEntry^.FileDate;
  133.                 NextPrintEntry^.Description := NextPrintEntry^.NextEntry^.Description;
  134.                 NextPrintEntry^.NextEntry^.TypeOfRecord := TempSort^.TypeOfRecord;
  135.                 NextPrintEntry^.NextEntry^.FileName := TempSort^.FileName;
  136.                 NextPrintEntry^.NextEntry^.FileSize := TempSort^.FileSize;
  137.                 NextPrintEntry^.NextEntry^.FileDate := TempSort^.FileDate;
  138.                 NextPrintEntry^.NextEntry^.Description := TempSort^.Description;
  139.                 Exchange := True;
  140.               End;
  141.               NextPrintEntry := NextPrintEntry^.NextEntry;
  142.             End;
  143.           Until (Not Exchange);
  144.           DisplayScreen;
  145.         End;
  146.         If SortPrev Then
  147.         Begin
  148.           Repeat
  149.             Exchange := False;
  150.             NextPrintEntry := BeginSort;
  151.             While NextPrintEntry <> EndSort Do
  152.             Begin
  153.               If NextPrintEntry^.FileDate > NextPrintEntry^.PrevEntry^.FileDate Then
  154.               Begin
  155.                 TempSort^.TypeOfRecord := NextPrintEntry^.TypeOfRecord;
  156.                 TempSort^.FileName := NextPrintEntry^.FileName;
  157.                 TempSort^.FileSize := NextPrintEntry^.FileSize;
  158.                 TempSort^.FileDate := NextPrintEntry^.FileDate;
  159.                 TempSort^.Description := NextPrintEntry^.Description;
  160.                 NextPrintEntry^.TypeOfRecord := NextPrintEntry^.PrevEntry^.TypeOfRecord;
  161.                 NextPrintEntry^.FileName := NextPrintEntry^.PrevEntry^.FileName;
  162.                 NextPrintEntry^.FileSize := NextPrintEntry^.PrevEntry^.FileSize;
  163.                 NextPrintEntry^.FileDate := NextPrintEntry^.PrevEntry^.FileDate;
  164.                 NextPrintEntry^.Description := NextPrintEntry^.PrevEntry^.Description;
  165.                 NextPrintEntry^.PrevEntry^.TypeOfRecord := TempSort^.TypeOfRecord;
  166.                 NextPrintEntry^.PrevEntry^.FileName := TempSort^.FileName;
  167.                 NextPrintEntry^.PrevEntry^.FileSize := TempSort^.FileSize;
  168.                 NextPrintEntry^.PrevEntry^.FileDate := TempSort^.FileDate;
  169.                 NextPrintEntry^.PrevEntry^.Description := TempSort^.Description;
  170.                 Exchange := True;
  171.               End;
  172.               NextPrintEntry := NextPrintEntry^.PrevEntry;
  173.             End;
  174.           Until (Not Exchange);
  175.           DisplayScreen;
  176.         End;
  177.         Dispose(TempSort);
  178.       End;
  179.     End;
  180.   End;
  181. {========================================================================}
  182.